<?php
	//Ultima verificacion: 22-11-2014 ; 21-02-2015
	class Inicio extends CI_Controller {
		//Metodo constructor de la clase
		function __construct(){
			parent::__construct();
			
			//Cargamos el helper de las cookies para poder recordar el usuario si lo desea.
			$this->load->helper('cookie');
		}
		
		//Este es el metodo que se llama por defecto cuando queremos entrar al login o al sistema
		//Si el usuario ya inicio sesion muestro el admin
		//Si el usuario no inicio sesion cargo la vista de login para que los usuarios puedan iniciar sesion
		//Este metodo no se puede llamar con AJAX
		function index($skin=null){
			//Busco a la institucion para comprobar que este activa
			$institucion = $this->m_institucion->get(1);
			
			//Si la institucion está activa mostramos el login o sistema. Caso contrario, una pantalla de error.
			if($institucion->row()->estado == 1){
				//Si entra en el IF quiere decir que el usuario tiene iniciada sesion actualmente.
				if($this->session->userdata('sesionIniciada') == 'Si'){
					//Para seleccionar el SKIN correcto
					//No se usa en la PRIMER VERSION
					/*if(is_numeric($skin) && $skin>=0 && $skin<=3){
						//Default - Azul
						if($skin == 0)	$this->session->set_userdata('skin', 'default');
										
						//Negro
						if($skin == 1)	$this->session->set_userdata('skin', 'skin-1');
											
						//Fucsia
						if($skin == 2)	$this->session->set_userdata('skin', 'skin-2');
											
						//Gris
						if($skin == 3)	$this->session->set_userdata('skin', 'skin-3');
					}*/
					
					//Cargo la vista donde se visualiza el TIMELINE y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_timeline', "", true);
					
					//Cargo la vista principal del sistema
					$this->load->view('v_sistema', $datosPrincipal);
				}else{
					//Guardo en la auditoria que alguien ingreso al login del sistema - Que, quien, donde y como
					$this->m_auditoria->crear(3, 0, $_SERVER['REMOTE_ADDR'],'VisitanteLogin');
					
					//Cargamos la vista del login sin ningun mensaje de error activado
					$datos['error'] = false;
					$this->load->view('login', $datos);
				}
			}else{
				//Mostramos la pagina de error.
				show_404();			
			}
		}
		
		//Este metodo no se puede llamar con ajax
		//Muestra la ayuda del sistema
		//Ultima verificación: 31-10-2014
		function ayuda(){
			//Primera comprobacion: Que el usuario tenga iniciada la sesion. No se requiere permisos adicionales ya que cualquiera puede acceder a la ayuda.
			if($this->session->userdata('sesionIniciada') == 'Si'){
				//Segunda comprobacion: Que las variables de sesion de usuario y de persona esten inicializadas
				if(is_numeric($this->session->userdata('idUsuarioLog')) && $this->session->userdata('idUsuarioLog')>0 && 
				   is_numeric($this->session->userdata('idPersonaLog')) && $this->session->userdata('idPersonaLog')>0){
					//Cargo la vista donde se muestra la ayuda del sistema y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_ayuda', "", true);
					
					//Cargo la vista principal con los datos de la ayuda
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El usuario no tiene permiso para realizar esta accion.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//El usuario no tiene permiso para realizar esta accion.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		}
						
		//Este metodo no se puede llamar con AJAX
		//Este es el metodo que se llama cuando queremos entrar en el sistema y no recordamos el usuario o password y solicitamos recordarlos
		//Cuando el usuario aprieta recordar datos hay que enviarle un mail con los datos
		function recordarDatos(){
			//Comprobacion: Que se haya pasado por post el nombre de usuario a recordarle sus datos
			if($this->input->post('username',true)){
				//Guardo en la auditoria que alguien ingreso al formulario de recordar usuario - Que, quien, donde y como
				$this->m_auditoria->crear(9, 0, $_SERVER['REMOTE_ADDR'], 'Recordar Datos a: ' . $this->input->post('username',true));
				
				//Cargo el modelo donde estan los datos de los usuarios
				$this->load->model('m_usuario');
				
				//Compruebo si el nombre de usuario pasado por post existe en la base de datos
				$usuario = $this->m_usuario->existeUsuario2($this->input->post('username',true));
				
				//Si trajo la consulta un registro es porque existe el usuario con ese nombre. Hay q mandarle un mail con sus datos si es que tiene correo cargado.
				if($usuario->num_rows() == 1){
					//Cargo el modelo donde estan los datos de las personas
					$this->load->model('m_persona');
					
					//Buscamos la persona del usuario logueado para saber si tiene cargado el correo
					$persona = $this->m_persona->get($usuario->row()->idPersona);
					
					//La persona debe existir y debe tener cargado el email.
					if($persona->num_rows()==1 && $persona->row()->email != ""){					
						//Cargo el helper para generar una cadena de string aleatoria.
						$this->load->helper('string');
						
						//Genero un password alternativo para el usuario
						$passwordAlternativo = random_string('alnum', 10);
						
						//Modifico el password alternativo con el recien generado
						$this->m_usuario->modificarPasswordAlternativo($usuario->row()->idUsuario, md5($passwordAlternativo));
										
						/*Envio Comun*/
						
						//Cargo la libreria para enviar mail todos los datos al usuario
						$this->load->library('email');
													
						//Busco el email y nombre de la web
						$instituto = $this->m_institucion->get(1);
						$remitente = $instituto->row()->email;
						$nombre = $instituto->row()->nombre;
						$this->email->from($remitente, $nombre);
						
						//Aqui va el destinatario, osea el email del usuario
						$this->email->to($persona->row()->email);
						
						$this->email->subject('Sus datos han sido recuperados.');
						$this->email->message('Su usuario es: '.$usuario->row()->nombre.' y su password nuevo es: '. $passwordAlternativo . ". Recuerde que puede modificarlo en cualquier momento desde su perfil.");
						
						//Envio el email
						$resul = $this->email->send();
						
						//Notificamos al usuario que todo ha sido realizado con existo.
						$mensajeError = "Su usuario y/o password han sido enviado a su email.";
						//$mensajeError = "Su usuario y/o password han sido enviado a su email. Resultado: " . $resul;
					}else{
						//El usuario y/o email no existen por lo que hay que notificarlo.
						$mensajeError = "Disculpe, debe tener un email cargado en nuestro sistema para poder recuperar su password. Debe contactarse con las autoridades solicitando cargar el mismo o resetear el password.";
					}
				}else{
					//El usuario y/o email no existen por lo que hay que notificarlo.
					$mensajeError = "Disculpe, su usuario no existe en nuestro sistema. Si crees que esto es un error comun&iacute;cate con nosotros.";
				}
				
				//Le paso a la vista recordar datos un mensaje para que lo muestre
				$datos['error'] = true;
				$datos['mensajeError'] = $mensajeError;
				
				//Cargo la vista con el mensaje correspondiente
				$this->load->view('recordar', $datos);
			}else{
				//Guardo en la auditoria que alguien ingreso al formulario de recordar usuario - Que, quien, donde y como
				$this->m_auditoria->crear(5, 0, $_SERVER['REMOTE_ADDR'],'Pantalla Recordar Datos');
				
				//Cargamos la vista recordar sin ningun mensaje de error activado
				$datos['error'] = false;
				$this->load->view('recordar', $datos);
			}
		}
	}
	
	/* End of file inicio.php */
	/* Location: ./application/controllers/inicio.php */
?>